#pragma once

#include "Common.h"
#include "Material.h"

namespace Physics
{
    struct Collider
    {
        rp3d::Collider *m_Impl;

        void SetOffsetTransform(const glm::vec3 &pos, const glm::quat &rot);

        void GetOffsetTransform(glm::vec3 &pos, glm::quat &rot);

        bool IsTrigger();

        void SetIsTrigger(bool v);

        void SetMaterialValue(float bounciness, float frictionCoeff, float massDensity);

        void GetMaterialValue(float &bouncines, float &frictionCoeff, float &massDensity) const;

        Physics::Material GetMaterial() const;

        void SetMaterial(const Physics::Material& material);

        unsigned short GetCollideWithMaskBits();

        unsigned short GetCollisionCategoryBits();

        void SetCollideWithMaskBits(const unsigned short &maskBits);

        void SetCollisionCategoryBits(const unsigned short maskBits);

    public:
        Collider(rp3d::Collider *impl);
    };
};
